package com.shujia.day15.homework;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

/*
        由控制台按照固定格式输入学生信息，包括学号，姓名，年龄信息，当输入的内容 为exit退出；将输入的学生信息分别封装到一个Student对象中，
        再将每个Student 对象加入到一个集合中，要求集合中的元素按照年龄大小正序排序；最后遍历集合，
        推荐步骤：
        a)     创建Student类，并指定按照年龄正序排列
        b)     通过控制台输入多个不同Student信息。格式规定为：编号#姓名#年龄
        c)     取出字符串中相应信息放入Student对象，并将Student加入到集合中
        难点：
        e)     如何指定学生按照年龄正序排列
        f)      如果从字符串“编号#姓名#年龄”中提取学生信息

        g)     放入哪种集合后可以保证学生按照年龄大小正序排列
 */
public class Test4 {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        int i = 1;
        TreeSet<Student2> set = new TreeSet<>(new Comparator<Student2>() {
            @Override
            public int compare(Student2 o1, Student2 o2) {
                //显式条件：年龄从小到大排序
                int i1 = o1.getAge()-o2.getAge();
                return (i1==0)?o1.getName().compareTo(o2.getName()):i1;
            }
        });

        while (true){
            System.out.println("请输入第 "+(i++)+" 个学生信息：");
            String info = sc.next();
            if("exit".equals(info)){
                System.out.println("结束输入！！");
                break;
            }
            //编号#姓名#年龄
            String[] infos = info.split("#");
            int id = Integer.parseInt(infos[0]);
            String name = infos[1];
            int age = Integer.parseInt(infos[2]);
            set.add(new Student2(id,name,age));
        }
        System.out.println("============学生信息如下：================");
        if(set.isEmpty()){
            System.out.println("没有任何学生信息录入！ 请及时录入！");
        }else {
            System.out.println("学号\t\t姓名\t\t年龄\t\t");
            for (Student2 s : set) {
                System.out.println(s);
            }
        }
    }
}
